home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / sys / quota.h < prev    next >
C/C++ Source or Header  |  2006-05-08  |  8KB  |  228 lines

  1. /* This just represents the non-kernel parts of <linux/quota.h>.
  2.  *
  3.  * here's the corresponding copyright:
  4.  * Copyright (c) 1982, 1986 Regents of the University of California.
  5.  * All rights reserved.
  6.  *
  7.  * This code is derived from software contributed to Berkeley by
  8.  * Robert Elz at The University of Melbourne.
  9.  *
  10.  * Redistribution and use in source and binary forms, with or without
  11.  * modification, are permitted provided that the following conditions
  12.  * are met:
  13.  * 1. Redistributions of source code must retain the above copyright
  14.  *    notice, this list of conditions and the following disclaimer.
  15.  * 2. Redistributions in binary form must reproduce the above copyright
  16.  *    notice, this list of conditions and the following disclaimer in the
  17.  *    documentation and/or other materials provided with the distribution.
  18.  * 4. Neither the name of the University nor the names of its contributors
  19.  *    may be used to endorse or promote products derived from this software
  20.  *    without specific prior written permission.
  21.  *
  22.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  23.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  25.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  26.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  27.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  28.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  29.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  31.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  32.  * SUCH DAMAGE.
  33.  *
  34.  * Version: $Id: quota.h,v 1.7.6.1 2005/07/18 02:07:37 roland Exp $
  35.  */
  36.  
  37. #ifndef _SYS_QUOTA_H
  38. #define _SYS_QUOTA_H 1
  39.  
  40. #include <features.h>
  41. #include <sys/types.h>
  42.  
  43. /*
  44.  * Select between different incompatible quota versions.
  45.  * Default to the version used by Linux kernel version 2.4.22
  46.  * or later.  */
  47. #ifndef _LINUX_QUOTA_VERSION
  48. # define _LINUX_QUOTA_VERSION 2
  49. #endif
  50.  
  51. /*
  52.  * Convert diskblocks to blocks and the other way around.
  53.  * currently only to fool the BSD source. :-)
  54.  */
  55. #define dbtob(num) ((num) << 10)
  56. #define btodb(num) ((num) >> 10)
  57.  
  58. /*
  59.  * Convert count of filesystem blocks to diskquota blocks, meant
  60.  * for filesystems where i_blksize != BLOCK_SIZE
  61.  */
  62. #define fs_to_dq_blocks(num, blksize) (((num) * (blksize)) / BLOCK_SIZE)
  63.  
  64. /*
  65.  * Definitions for disk quotas imposed on the average user
  66.  * (big brother finally hits Linux).
  67.  *
  68.  * The following constants define the amount of time given a user
  69.  * before the soft limits are treated as hard limits (usually resulting
  70.  * in an allocation failure). The timer is started when the user crosses
  71.  * their soft limit, it is reset when they go below their soft limit.
  72.  */
  73. #define MAX_IQ_TIME  604800    /* (7*24*60*60) 1 week */
  74. #define MAX_DQ_TIME  604800    /* (7*24*60*60) 1 week */
  75.  
  76. #define MAXQUOTAS 2
  77. #define USRQUOTA  0        /* element used for user quotas */
  78. #define GRPQUOTA  1        /* element used for group quotas */
  79.  
  80. /*
  81.  * Definitions for the default names of the quotas files.
  82.  */
  83. #define INITQFNAMES { \
  84.    "user",      /* USRQUOTA */ \
  85.    "group",   /* GRPQUOTA */ \
  86.    "undefined", \
  87. };
  88.  
  89. #define QUOTAFILENAME "quota"
  90. #define QUOTAGROUP "staff"
  91.  
  92. #define NR_DQHASH 43          /* Just an arbitrary number any suggestions ? */
  93. #define NR_DQUOTS 256         /* Number of quotas active at one time */
  94.  
  95. /*
  96.  * Command definitions for the 'quotactl' system call.
  97.  * The commands are broken into a main command defined below
  98.  * and a subcommand that is used to convey the type of
  99.  * quota that is being manipulated (see above).
  100.  */
  101. #define SUBCMDMASK  0x00ff
  102. #define SUBCMDSHIFT 8
  103. #define QCMD(cmd, type)  (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK))
  104.  
  105. #if _LINUX_QUOTA_VERSION < 2
  106. # define Q_QUOTAON  0x0100    /* enable quotas */
  107. # define Q_QUOTAOFF 0x0200    /* disable quotas */
  108. # define Q_GETQUOTA 0x0300    /* get limits and usage */
  109. # define Q_SETQUOTA 0x0400    /* set limits and usage */
  110. # define Q_SETUSE   0x0500    /* set usage */
  111. # define Q_SYNC     0x0600    /* sync disk copy of a filesystems quotas */
  112. # define Q_SETQLIM  0x0700    /* set limits */
  113. # define Q_GETSTATS 0x0800    /* get collected stats */
  114. # define Q_RSQUASH  0x1000    /* set root_squash option */
  115. #else
  116. # define Q_SYNC     0x800001    /* sync disk copy of a filesystems quotas */
  117. # define Q_QUOTAON  0x800002    /* turn quotas on */
  118. # define Q_QUOTAOFF 0x800003    /* turn quotas off */
  119. # define Q_GETFMT   0x800004    /* get quota format used on given filesystem */
  120. # define Q_GETINFO  0x800005    /* get information about quota files */
  121. # define Q_SETINFO  0x800006    /* set information about quota files */
  122. # define Q_GETQUOTA 0x800007    /* get user quota structure */
  123. # define Q_SETQUOTA 0x800008    /* set user quota structure */
  124. #endif
  125.  
  126. /*
  127.  * The following structure defines the format of the disk quota file
  128.  * (as it appears on disk) - the file is an array of these structures
  129.  * indexed by user or group number.
  130.  */
  131. #if _LINUX_QUOTA_VERSION < 2
  132. struct dqblk
  133.   {
  134.     u_int32_t dqb_bhardlimit;    /* absolute limit on disk blks alloc */
  135.     u_int32_t dqb_bsoftlimit;    /* preferred limit on disk blks */
  136.     u_int32_t dqb_curblocks;    /* current block count */
  137.     u_int32_t dqb_ihardlimit;    /* maximum # allocated inodes */
  138.     u_int32_t dqb_isoftlimit;    /* preferred inode limit */
  139.     u_int32_t dqb_curinodes;    /* current # allocated inodes */
  140.     time_t dqb_btime;        /* time limit for excessive disk use */
  141.     time_t dqb_itime;        /* time limit for excessive files */
  142.   };
  143. #else
  144.  
  145. /* Flags that indicate which fields in dqblk structure are valid.  */
  146. #define QIF_BLIMITS    1
  147. #define QIF_SPACE    2
  148. #define QIF_ILIMITS    4
  149. #define QIF_INODES    8
  150. #define QIF_BTIME    16
  151. #define QIF_ITIME    32
  152. #define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)
  153. #define QIF_USAGE    (QIF_SPACE | QIF_INODES)
  154. #define QIF_TIMES    (QIF_BTIME | QIF_ITIME)
  155. #define QIF_ALL        (QIF_LIMITS | QIF_USAGE | QIF_TIMES)
  156.  
  157. struct dqblk
  158.   {
  159.     u_int64_t dqb_bhardlimit;    /* absolute limit on disk quota blocks alloc */
  160.     u_int64_t dqb_bsoftlimit;    /* preferred limit on disk quota blocks */
  161.     u_int64_t dqb_curspace;    /* current quota block count */
  162.     u_int64_t dqb_ihardlimit;    /* maximum # allocated inodes */
  163.     u_int64_t dqb_isoftlimit;    /* preferred inode limit */
  164.     u_int64_t dqb_curinodes;    /* current # allocated inodes */
  165.     u_int64_t dqb_btime;    /* time limit for excessive disk use */
  166.     u_int64_t dqb_itime;    /* time limit for excessive files */
  167.     u_int32_t dqb_valid;    /* bitmask of QIF_* constants */
  168.   };
  169. #endif
  170.  
  171. /*
  172.  * Shorthand notation.
  173.  */
  174. #define    dq_bhardlimit    dq_dqb.dqb_bhardlimit
  175. #define    dq_bsoftlimit    dq_dqb.dqb_bsoftlimit
  176. #if _LINUX_QUOTA_VERSION < 2
  177. # define dq_curblocks    dq_dqb.dqb_curblocks
  178. #else
  179. # define dq_curspace    dq_dqb.dqb_curspace
  180. # define dq_valid    dq_dqb.dqb_valid
  181. #endif
  182. #define    dq_ihardlimit    dq_dqb.dqb_ihardlimit
  183. #define    dq_isoftlimit    dq_dqb.dqb_isoftlimit
  184. #define    dq_curinodes    dq_dqb.dqb_curinodes
  185. #define    dq_btime    dq_dqb.dqb_btime
  186. #define    dq_itime    dq_dqb.dqb_itime
  187.  
  188. #define dqoff(UID)      ((loff_t)((UID) * sizeof (struct dqblk)))
  189.  
  190. #if _LINUX_QUOTA_VERSION < 2
  191. struct dqstats
  192.   {
  193.     u_int32_t lookups;
  194.     u_int32_t drops;
  195.     u_int32_t reads;
  196.     u_int32_t writes;
  197.     u_int32_t cache_hits;
  198.     u_int32_t pages_allocated;
  199.     u_int32_t allocated_dquots;
  200.     u_int32_t free_dquots;
  201.     u_int32_t syncs;
  202.   };
  203. #else
  204.  
  205. /* Flags that indicate which fields in dqinfo structure are valid.  */
  206. # define IIF_BGRACE    1
  207. # define IIF_IGRACE    2
  208. # define IIF_FLAGS    4
  209. # define IIF_ALL    (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)
  210.  
  211. struct dqinfo
  212.   {
  213.     u_int64_t dqi_bgrace;
  214.     u_int64_t dqi_igrace;
  215.     u_int32_t dqi_flags;
  216.     u_int32_t dqi_valid;
  217.   };
  218. #endif
  219.  
  220. __BEGIN_DECLS
  221.  
  222. extern int quotactl (int __cmd, const char *__special, int __id,
  223.              caddr_t __addr) __THROW;
  224.  
  225. __END_DECLS
  226.  
  227. #endif /* sys/quota.h */
  228.